package com.yc.d0316;

import com.google.gson.Gson;
import com.yc.util.DBHelper;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@WebServlet(name = "QueryBookServlet", value = "/QueryBookServlet.s")
public class QueryBookServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        final String bookname = request.getParameter("bookname");
        final String bookauthor = request.getParameter("bookauthor");

        final String pageSize = request.getParameter("pageSize");
        final String currentPage = request.getParameter("currentPage");
        int size = Integer.valueOf(pageSize);
        int page = Integer.valueOf(currentPage);
        int begin = size * (page - 1);

        // 说明 : 该案例的sql直接写在servlet 中, 项目中不允许
        String sql = "select * from bm_book where status=1";

        // 组合条件查询
        List<Object> params = new ArrayList<>();
        if(bookname != null && bookname.trim().isEmpty() == false){
            sql += " and bookname like ?";
            params.add("%" + bookname + "%");
        }
        if(bookauthor != null && bookauthor.trim().isEmpty() == false){
            sql += " and bookauthor like ?";
            params.add("%" + bookauthor + "%");
        }

        // 查询总行数
        final long total = DBHelper.count(sql,params.toArray());

        params.add(begin);
        params.add(size);

        // 查询当前页的数据
        final List<Map<String, Object>> data =
                DBHelper.selectListMap(sql + " limit ?, ?", params.toArray());

        Map<String, Object> result = new HashMap<>();
        result.put("data",data);
        result.put("total",total);
        final String json = new Gson().toJson(result);
        response.getWriter().append(json);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}
